package com.acsior.hibernate.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import com.acsior.dac.impl.hibernate.vo.GeneratorKey;

/**
 * Value oбект, които служи за генериране на пощенски номера
 * 
 * @author Г. Белев
 */
@Entity
@Table(name = "post_numbers")
@GeneratorKey(tableName = "post_numbers")
public final class PostNumberVO implements Serializable {

	private static final long serialVersionUID = -9073149549301160710L;

	/** Последният генериран номер от съответния тип */
	@Column(name = "last_value", nullable = false)
	private Integer lastValue;

	/** Ключ, под който стои генератора */
	@Id
	@Column(name = "number_key", unique = true, nullable = false, length = 50)
	private String numberKey;

	/** default constructor */
	public PostNumberVO() {
		super();
	}

	/**
	 * @param numberKey
	 *            името на ключва в БД
	 * @param lastValue
	 */
	public PostNumberVO(String numberKey, int lastValue) {
		this.numberKey = numberKey;
		this.lastValue = lastValue;
	}

	/** @return последният използван номер */
	public Integer getLastValue() {
		return this.lastValue;
	}

	/** @return името на ключа в БД */
	public String getNumberKey() {
		return this.numberKey;
	}

	/**
	 * @param lastValue
	 *            the lastValue to set
	 */
	public void setLastValue(Integer lastValue) {
		if (lastValue == null) {
			this.lastValue = 0;
		} else {
			this.lastValue = lastValue;
		}
	}

	/**
	 * @param numberKey
	 *            the tableName to set
	 */
	public void setNumberKey(String numberKey) {
		this.numberKey = numberKey;
	}

}